package offical.base

/**
 * 标准函数
 */
fun sum1(a: Int, b: Int): Int {
    return a + b
}

/**
 * 将表达式作为函数体
 */
fun sum2(a: Int, b: Int) = a + b

/**
 * 无意义返回值，可以省略
 */
fun sum3(a: Int, b: Int): Unit {
    println("$a+$b=${a + b}")
}

/**
 * if表达式作为函数体
 */
fun maxof(num1: Int, num2: Int) = if (num1 > num2) num1 else num2

/**
 * 参数和返回值可空，默认不可空
 */
fun canNull(a: Int?): Int? = a

fun getStrinhgLength(any: Any?): Int? {

    /**
     * is运算符检测后面执行代码类型自动转换
     */
    if (any is String && any.length > 0) {
        return any.length
    }

    return null
}


/**
 * 顶层变量
 */
val PI = 3.14


fun main(args: Array<String>) {

    //类型自动推导
    val a = 1

    //没有初始值必须带类型
    val b: Int
    /*     这是一个块注释  /* 这个块注释可以嵌套 */   */
    b = 2

    val canNull = canNull(1)

    //这里需要对canNull进行非空判定，否则需要非空断言canNull!!.
    if (canNull != null) {
        println(canNull + 1)
    }
    //非空断言后，在同个作用域再次使用不用进行断言
    println(canNull!! + 2)
    println(canNull + 2)

    val intArray = intArrayOf(1, 1, 23, 6, 4, 6)

    for (i in intArray) {
        println(i)
    }


}








